1. Field of the Invention
This invention relates to computer network protocols. More particularly, this invention relates to dynamic negotiation of the protocol version for a view-oriented group communication system.
2. Description of the Related Art
In any software system being continuously maintained and deployed, multiple versions may co-exist in parallel. If the system is a distributed one in which various components communicate with each other, this may cause problems if the communicating components run different versions. For example, the communication protocol might have been modified between the versions. If the different components are to coordinate an action (e.g., distributed garbage collection, cooperative caching) so that each component deterministically takes the same decision, the decision criteria might diverge in different versions. The states that the implementations of different versions maintain may be incompatible or not easily convertible to each other.
There is a commonly used solution to the above problems in the prior art for a client-server model. Either the server (more commonly) or the client (less commonly) is designed to support multiple versions. When the client connects to the server, they start a negotiation phase during which they agree on the version to use during the session. Once negotiated, this version never changes dynamically afterwards. This solution is used by NFS-based and HTTP-based communication.
Group communication is a technique for providing multi-point to multi-point communication by organizing communication entities in groups. For example, a group can consist of users playing an on-line game with each other. Another group can consist of participants in a multi-media conference. Each group is associated with a logical name. Communication entities communicate with group members by sending a message targeted to the group name; the group communication service delivers the message to the group members.
The Ensemble group communication system, developed at Cornell University and the Hebrew University of Jerusalem and available from the website of the Distributed Systems Laboratory of Technion—Israel Institute of Technology, provides a library of protocols for building complex distributed applications. Using Ensemble, an application registers event handlers with Ensemble, and then the Ensemble protocols handle the details of reliably sending and receiving messages, transferring state, implementing security, detecting failures, and managing reconfigurations in the system. The high-level protocols provided to applications are really stacks of tiny protocol “layers. These protocol layers each implement several simple properties: they are composed to provide sets of high level properties, such as total ordering, security, virtual synchrony.